// 使用aixos的二次封装
import { message } from 'antd'
import axios from 'axios'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'

// 定义响应回来的数据类型
interface ResponseData<T>{
  code:number,
  message:string,
  //data数据类型不确定使用泛型 使用的时候确定类型   
  data:T
}

// 创建instance实例
const instance = axios.create({
    // 配置基础 路径
    baseURL:'/app-dev',
    // 设置时间
    timeout:20000
})

// 使用请求拦截器和响应拦截器
instance.interceptors.request.use((config)=>{
    // 登录成功标识返回token带着token发请求

    // 请求拦截器设置进度条显示加载
    Nprogress.start()
    return config
})

instance.interceptors.response.use(
    async(response)=>{
    let res = response.data
    //此处判断响应回来的数据的code
    // 如果不等于200或者不等于2000的时候-直接提示错误信息
    if(res.code !== 200  && res.code !== 2000 ){
        message.error({
            content:res.message,
            top: 100,
            duration: 2,
            rtl: true,
            prefixCls: 'my-message',
          });
    }
    Nprogress.done()
    // 对于token过期的处理
    return res.data  //直接将最终的数据返回
   },
   (error)=>{
    Nprogress.done()
    // 提示错误信息
    alert('发送ajax请求失败'+error.message)
    //  此处错误不处理直接返回
    return Promise.reject(error)
   }

   
)


export default instance


